package org.aspire.graphics;

import java.awt.Graphics2D;
import java.awt.Transparency;
import java.awt.image.BufferedImage;

/******************************************************************************
 * Utility class for manipulating and creating images.
 * 
 * @author JPACarabuena
 *****************************************************************************/
public final class ImageUtil implements NativeGraphicsInfo {

	// ========================================================================
	// Constants
	// ========================================================================

	// ========================================================================
	// Static Methods
	// ========================================================================

	/**************************************************************************
     * Creates blank image with specified width, height, and transparency.
     * 
     * @param width image width
     * @param height image height
     * @param transparency image transparency
     * @return Blank image.
	 *************************************************************************/
	public static BufferedImage createImage(int width, int height, 
			int transparency) {
		return NativeGraphicsInfo.CONFIG.createCompatibleImage(width, height, 
				transparency);
	}
	
	public static BufferedImage[] splitImage(Frame image, int col, int row) {
		int total = col * row;
		int frame = 0;
		int i, j;
		int w = image.getWidth() / col;
		int h = image.getHeight() / row;
		
		BufferedImage[] images = new BufferedImage[total];
		
		for(j = 0; j < row; j++) {
			for(i = 0; i < col; i++) {
				images[frame] = ImageUtil.createImage(w, h, 
						Transparency.TRANSLUCENT);
				Graphics2D g = images[frame].createGraphics();
				g.drawImage((BufferedImage) image.getImage(), 0, 0, w, h,
						i * w, j * h, (i + 1) * w, (j + 1) * h, null);
				g.dispose();
				frame++;
			}
		}
		
		return images;
	}
	// ========================================================================
	// Fields
	// ========================================================================

	// ========================================================================
	// Constructors
	// ========================================================================

	/**************************************************************************
	 * Hidden constructor to avoid instantiation of this class.
	 *************************************************************************/
	protected ImageUtil() {
		
	}
	
	// ========================================================================
	// Getters & Setters
	// ========================================================================

	// ========================================================================
	// Override Methods
	// ========================================================================

	// ========================================================================
	// Methods
	// ========================================================================

	
	// ========================================================================
	// Inner & Anonymous Classes
	// ========================================================================
}